﻿#define _CRT_SECURE_NO_WARNINGS 1
//题目：区间和（）
//假定有一个无限长的数轴，数轴上每个坐标上的数都是 0。
//现在，我们首先进行 n次操作，每次操作将某一位置 x上的数加 c。
//接下来，进行 m次询问，每个询问包含两个整数 l和 r，你需要求出在区间[l, r]之间的所有数的和。
//输入格式
//第一行包含两个整数 n和 m。
//接下来 n行，每行包含两个整数 x和 c。
//再接下来 m行，每行包含两个整数 l和 r。
//输出格式
//共 m行，每行输出一个询问中所求的区间内数字和。
//数据范围
//−109≤x≤109,1≤n, m≤105,−109≤l≤r≤109,−10000≤c≤10000
//输入样例：
//3 3
//1 2
//3 6
//7 5
//1 3
//4 6
//7 8
//输出样例：
//8
//0
//5
//#include<iostream>
//#include<algorithm>
//#include<vector>
//
//using namespace std;
//typedef pair<int, int>PII;
//const int N = 300010;
//int a[N], s[N];
//vector<int>alls;//存的是离散化后值得下标
//vector<PII>add, query;//add是将每一个位置加c的我位置保存下来，query是保存每一个查询得下标
//int find(int x)
//{
//    int l = 0; int r = alls.size() - 1;
//    while (l < r)
//    {
//        int mid = l + r >> 1;
//        if (alls[mid] >= x) r = mid;
//        else l = mid + 1;
//    }
//    return l + 1;
//}
//int main()
//{
//    int n, m;
//    cin >> n >> m;
//    for (int i = 0; i < n; i++)
//    {
//        int x, c;
//        cin >> x >> c;
//        add.push_back({ x,c });//存每一次在x上加c
//        alls.push_back(x);
//    }
//    for (int i = 0; i < m; i++)
//    {
//        int l, r;
//        cin >> l >> r;
//        query.push_back({ l,r });
//        alls.push_back(l);
//        alls.push_back(r);
//    }
//    sort(alls.begin(), alls.end());//排序
//    alls.erase(unique(alls.begin(), alls.end()), alls.end());//去重
//    for (int i = 0; i < add.size(); i++)
//    {
//        PII item = add[i];
//        int x = find(item.first);
//        a[x] += item.second;
//    }
//    //求前缀和
//    for (int i = 1; i <= alls.size(); i++) s[i] = s[i - 1] + a[i];
//    //处理询问
//    for (int i = 0; i < query.size(); i++)
//    {
//        PII item = query[i];
//        int l = find(item.first); int r = find(item.second);
//        cout << s[r] - s[l - 1] << endl;
//    }
//    return 0;
//}

//题目：字符串删减
//给定一个由 n个小写字母构成的字符串。
//现在，需要删掉其中的一些字母，使得字符串中不存在连续三个或三个以上的 x。
//请问，最少需要删掉多少个字母？
//如果字符串本来就不存在连续的三个或三个以上 x，则无需删掉任何字母。
//输入格式
//第一行包含整数 n。
//第二行包含一个长度为 n的由小写字母构成的字符串。
//输出格式
//输出最少需要删掉的字母个数。
//数据范围
//3≤n≤100
//输入样例1：
//6
//xxxiii
//输出样例1：
//1
//输入样例2：
//5
//xxoxx
//输出样例2：
//0
//输入样例3：
//10
//xxxxxxxxxx
//输出样例3：
//8
//#include<iostream>
//using namespace std;
//const int N = 110;
//char cp[N];
//int main()
//{
//    int n;
//    cin >> n >> cp;
//    int start = 0, end = 1, cnt = 1, ret = 0;
//    while (end < n)
//    {
//        if (cp[start] == cp[end] && cp[end] == 'x')
//        {
//            cnt++;
//            end++;
//        }
//        else if (cp[start] != cp[end] && cp[start] == 'x')//前指针和后指针不相等，但是前指针为x，就要将前指针跳到end，end在++
//        {
//            cnt = 1;
//            start = end;
//            end++;
//        }
//        else
//        {
//            start++;
//            end++;
//        }
//        if (cnt >= 3) ret++;
//    }
//    cout << ret << endl;
//    return 0;
//}